package cn.woflcode.game.Global;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class ImageUtil {
    //key设置为String类型字符串,value设置为 缓冲区图像类型 BufferedImage
    private static Map<String, BufferedImage> imageMap = new HashMap<>();

    //静态代码块, 类字节码对象加载到虚拟机的时候运行
    static {
        //找到图片的目录,并且创建目录对象 dir
        File dir = new File("assets/images");
        //列出该目录下所有图片 此时是一堆图片,所有要调用 listFiles方法,且用数组来接收
        File[] files = dir.listFiles();
        //快捷键 ctrl + l 格式化代码
        try {
            //把图片一张一张取出来,需要使用 遍历
            //foreach 循环遍历的快捷键 iter
            for (File file : files) {
                //通过 io 读取遍历出来的每一张图片对象
                BufferedImage image = null;
                image = ImageIO.read(file);
                //获取图片名字 fileName ,比如说 hero0.png ,我们需要的文件名是 hero ,所以这边要做截取操作
                //1.先找到文件 file 的名字,截取这个名字最后一个 . 的位置
                int i = file.getName().lastIndexOf(".");
                //2.然后调用substring方法截取真正的文件名 fileName,比如说 hero0 ,注意这里方法截取的范围是前闭后开
                String fileName = file.getName().substring(0, i);
                //然后把图片存到上面创建的 imageMap 对象中去
                //此时需要两个参数, key:文件名String类型的 , value:图片对象,bufferedImage
                imageMap.put(fileName, image);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //从map集合中获取指定 名称 的图片对象
    public static BufferedImage getImage(String key){
        return imageMap.get(key);
    }
}
